1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| let x = [-1,1,0,0] let y = [0,0,-1,1] var mark = function(i,j,flag,grid){ grid[i][j] = flag; for (let key = 0; key < 4; key++) { (grid[i + x[key]][j + y[key]] === '1') && (mark(i + x[key],j+y[key],flag,grid)); } } var numIslands = function(grid) { if (!grid.length){return 0;} let flag = 1; grid.unshift(new Array(grid[0].length).fill('0')); grid.push(new Array(grid[0].length).fill('0')); grid.map((item)=>{ item.unshift('0') item.push('0') }) for(let i = 1; i < grid.length-1; i++) { for (let j = 1; j < grid[i].length-1; j++) { if (grid[i][j] === '1') { flag++; mark(i,j,flag,grid); } } } return (flag - 1) };
|